Skip to content
[旅するAI bot]LLM達の口癖
旅するAIbot
note記述記事
2023-11-19

いろいろ書きたいことはありますが、ちょっと今週末は忙しいので小ネタだけ。
mi達の会話を作る会話AIは基本ランダム(+前回使ったLLMは選びにくい)で複数のLLMを切り替えています。いくつか理由がありますが

  1. いくら賢いAIでも沢山記事を書かせるとやはりワンパターンになるのでLLMを切り替えてワンパターンを減らしたい

  2. 課金がかかるAIはやはり減らしてランニングコストを抑えたい

  3. 各LLM特有の癖みたいなものを見るのはそれなりに面白い

1の理由がわりと切実です。基本入れているプロンプトは毎回同様ですので何百も旅記事を作ればいくら賢いAIでもやはりワンパターン感は出てくるのです。ただあんまり変な出力が出るとイメージに合わなくなるので外さざるを得ないのですが。

LLM名のタグが実は少しバグってる

X/Twitterやブログ上でどのLLMが記事文章を書いたのかを分かるようにある時期からLLM名を添付しています(LLM名を書いているのは「AI生成記事であることを明記」してハルシネーションの誤解を減らしたい意味もあります)
ところがどうもマイナーなバグを入れてしまってmi達の処理が重複したときにたまに別のLLM名を出してるのがわかってます。。
内部で記録しているログの記述は間違っていないのも分かっていて、ただSNS類に出力している名称を間違えているという。。
おおよそ部位は分かっているのですが、このシステムは間違えていることで誰かが困るようなシステムではありません。であれば少ない時間と気力を消費するより

困っていなければ直す必要はない。運用で回避すればよい。

(まぁそのためにたまにまとめて大きなリファクタリング改修はするんですけどね。
勉強がてらこのあたりをカリーっぽく整理するかなとか)

というわけで各LLMの口癖を書いておいて「このLLMにしては変な出力だな」みたいな誤認を減らしておこうかなという話しです。

旅botでの各LLMの口癖

GPT4/GPT3.5

https://twitter.com/marble_walker/status/1698644964669100124

現状では圧倒的に他のLLMより賢いGPT4/3.5ですが旅bot上の重要な癖として

直近の停泊地と比較した感想を記述する

があります。
これはGPT4/3.5は論理的な指示の理解がうまいので最初の頃からプロンプトに「(直前の停泊地のサマリ)+直前の停泊地と短く比較をして」という指示を入れています。他のLLMだとやはりそこまでの指示を受け付けてくれないことが多く、ローカルLLMの処理も重くなるので他のLLMへのプロンプトでは外すようにしています。

GPT3.5

https://twitter.com/marble_walker/status/1723908941124718615

どうもAIなりすまし対策が強化されたため「私は旅していません」的なことを結構言うようになってしまったのでGPT3.5は今は一時的に外しています。
ですがGPT3.5はちょっと面白い癖があります。

文章の終わりに「ですね。ですよ。」と言ってしまう

これは元々話し方を調整するために「文の終わりは「ですね」「ですよ」にして」とすべてのLLMのプロンプトに入れているのですが、GPT3.5だけはなぜかこの指示を文字通りに受け取って文章の終わりに「ですね。ですよ。」と言ってしまうのです。
X/Twitterでは文章の終わりまで出るのが少ないので目立ちませんがブログ側だと結構な確率で「ですね。ですよ。」となります。

rinna/youri

https://twitter.com/marble_walker/status/1724686507729129834

これはよく見かけますがrinnaやyouriの文章には**文の末尾に</s>**が付きます。これはモデルのほうがそういう風に作られているのかもしれません。 公式のサンプルコードそのものにも</s>が出ていますし(https://huggingface.co/rinna/youri-7b-chat#how-to-use-the-model) 出力時の編集で削除してもよいのですが、LLMタグが間違えていないかの確認するのにわかりやすいのでそのままにしています。 あとオリジナルrinnaからの考え方なのか、短めな文章が多いです。GPT4のレポート調の出力ではなく、現実の会話は「あれ」「これ」みたいな短い文が多いので会話向けなのかもしれません。

2023/11/22 追記修正
</s>が付いていてもrinna系とは限らないというケースありました。。モデルそのものに</s>が付くのではなく、直近の話題がrinna系で作られていて、その直近会話をマルチターン会話の入力プロンプトにしていた場合、結果に</s>が付くことがあるようです。

StableLm

https://twitter.com/marble_walker/status/1725361816958886152

やや片言日本語っぽくなります。でもなぜかたまに流ちょうに語り出すことがあるのが不思議です(ログまで確認しているのでLLM種別の誤認はしてないです)。

https://twitter.com/marble_walker/status/1722084585524375800

CyberAgent-calm2

https://twitter.com/marble_walker/status/1722881257091240387

ELYZA-Llama

https://twitter.com/marble_walker/status/1725855678005436527

旅botで使用する分にはca-calmもELYZAも両者ほぼ同等に日本語が上手です。ベンチマークの記事でも日本語性能でこの2つが強いのは納得できます。
あくまで印象でいうとca-calmのほうが「あ、」みたいな感動詞とか擬態語がやや多いかなという感じです。そのあたりになると本当に「どちらの文体が好み?」という好みの差です。
逆にこの微妙な差はLLMに意図的にプロンプトで指定することは難しく思います。LLMを切り替えて表現バリエーションを増やすというのは旅botのような目的では有用と考えています。

「アニメキャラの口調にして」という風にLLMに口調を設定しようという話は多いのですが、各LLMの素に近い口癖を評価するのも面白いのではないかと思います。
それに「ですね。ですよ。が口癖です」なんてのも可愛いじゃありませんか。

(初出 note https://note.com/marble_walkers/n/nb3d743de8fd5 )